Over the years, software application designers employ fine-grained object classification more frequently than generic object classification during software application development. Fine-grained object classification involves at least the following steps: (1) labeling/localizing discriminative parts, and (2) learning appearance descriptors. Conventionally, labeling/localizing discriminative parts is performed using either manual parts annotation or image segmentation, and learning appearance descriptors is performed using a multi-layer deep neural network. As objects classed in a fine-grained object category (i.e., class) share a high degree of shape similarity, performing the steps of labeling/localizing discriminative parts and learning appearance descriptors may be challenging.